package com.siashan.toolkit.core.math;

import java.math.BigDecimal;

/**
 * 货币工具类
 *
 * @author siashan
 * @since v1.0.7
 **/
public class MoneyUtil {
    /**
     * 元,两位小数
     *
     * @param amount 元的金额
     * @return 元的金额 两位小数
     */
    public static  BigDecimal conversionAmount(BigDecimal amount) {
        return amount.setScale(2, BigDecimal.ROUND_HALF_UP);
    }


    //---------------------------------------------  元转分  ---------------------------------------------------------//

    /**
     * 元转分
     *
     * @param amount 元的金额
     * @return 分的金额
     */
    public static  int yuan2Cent(BigDecimal amount) {
        return amount.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
    }

    /**
     * 元转分
     *
     * @param amount 元的金额
     * @return 分的金额
     */
    public static  int yuan2Cent(Double amount) {
        return yuan2Cent(amount);
    }
    /**
     * 元转分
     *
     * @param amount 元的金额
     * @return 分的金额
     */
    public static  int yuan2Cent(Number amount) {
        if(null == amount){
            return 0;
        }
        BigDecimal result = new BigDecimal(amount.toString());
        return result.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
    }

    /**
     * 分转元
     *
     * @param amount 元的金额
     * @return 分的金额
     */
    public static  BigDecimal cent2Yuan(int amount) {
        return BigDecimal.valueOf(Long.valueOf(amount)).divide(new BigDecimal(100));
    }


    //***************************************************************************************************************//
    //*******************************************  compare  *********************************************************//
    //***************************************************************************************************************//

    /**
     * 校验金额是否相同
     *
     * @param amount1 金额1
     * @param amount2 金额2
     * @return 是否相同
     */
    public static  boolean compareEquals(BigDecimal amount1,BigDecimal amount2){
        return amount1.compareTo(amount2) == 0;
    }
}
